package two.dimensional.arrays;

/**
 * @author shkstart
 * @date 2022/4/16 - 21:31
 */
/*
 * 二维数组的使用
 *
 * 1.理解：
 * 对于二维数组的理解，我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。
 * 其实，从数组底层的运行机制来看，其实没有多维数组。
 *
 * 2. 二维数组的使用:
 *   ① 二维数组的声明和初始化
 *   ② 如何调用数组的指定位置的元素
 *   ③ 如何获取数组的长度
 *   ④ 如何遍历数组
 *   ⑤ 数组元素的默认初始化值 :见 ArrayTest02.java
 *   ⑥ 数组的内存解析 :见 ArrayTest02.java
 *
 *
 */

public class TwoArrayExplain {
    public static void main(String[] args) {
        //1.二维数组的声明和初始化
        int arr[] = new int[]{1,2,3,4};//一维数组
        //静态初始化
        int arr1[][] = new int[][]{{1,2,3},{2,66},{2,3,4}};
        //动态初始化1
        int arr2[][] = new int[3][2];
        //动态初始化2
        String arr3[][] = new String[3][];
        //错误的情况
//      String[][] arr4 = new String[][4];
//      String[4][3] arr5 = new String[][];
//      int[][] arr6 = new int[4][3]{{1,2,3},{2,66},{2,3,4}};

        //也是正确的写法：
        int[] arr4[] = new int[4][];
        int[] arr5[] = {{1,2,44},{2,3,77,42},{2,3,66}};

        //2.如何调用数组的指定位置的元素
        System.out.println(arr1[2][2]);//4
        System.out.println(arr2[1][0]);//0

        arr3[1] = new String[4];
        System.out.println(arr3[1][0]);

        //3.获取数组的长度
        System.out.println(arr4.length);//4
        System.out.println(arr5[1].length);//4
        System.out.println(arr5[0].length);//3

        //4.如何遍历二维数组
        for (int i = 0; i < arr5.length; i++ ) {
            for (int j = 0; j < arr5[i].length; j++ ) {
                System.out.print(arr5[i][j] + " ");
            }
            System.out.println();
        }

    }
}
